package com.xnxy.design.mapper;

import com.xnxy.design.model.Announcement;
import org.apache.ibatis.annotations.Options;

import java.util.List;

/**
 * dao层的接口工具类
 *
 * @param <T>
 * @param <M>
 * @author puzengchneg
 * @date 2018/10/13
 */
public interface CoreMapper<T, M> {

    /**
     * 通过id删除数据
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(M[] id);

    /**
     * 插入一条数据，id
     *
     * @param obj
     * @return
     */
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    int insert(T obj);


    /**
     * 先判断内容是否为空在进行插入
     *
     * @param obj
     * @return
     */
    int insertSelective(T obj);


    /**
     * 通过id查询数据内容
     *
     * @param id
     * @return
     */
    T selectByPrimaryKey(M id);

    /**
     * 先通过数据判断是否为空在修改，不为空的内容
     *
     * @param obj
     * @return
     */
    int updateByPrimaryKeySelective(T obj);

    /**
     * 直接修改成当前对象的内容
     *
     * @param obj
     * @return
     */
    int updateByPrimaryKey(T obj);

    /**
     * 查询全部数据信息
     *
     * @return
     */
    List getAll(List<String> employeeIds);

    /**
     * 查询数据量有多少
     * @return int
     */
    int size();


    int updateByPrimaryKeyWithBLOBs(T record);

    List selectAll();
}
